package com.tianruan.dc.modules.sys.user.api;


import com.tianruan.dc.common.utils.OSSUtils;
import com.tianruan.dc.common.utils.response.VResponse;
import com.tianruan.dc.modules.sys.user.entity.dto.FeedbackDTO;
import com.tianruan.dc.modules.sys.user.entity.dto.FeedbackPageQueryDTO;
import com.tianruan.dc.modules.sys.user.entity.dto.WXFeedbackPageQueryDTO;
import com.tianruan.dc.modules.sys.user.service.IFeedbackService;
import com.tianruan.dc.modules.userinfo.result.PageResult;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;


import java.util.Calendar;
import java.util.Objects;

import static com.tianruan.dc.common.constant.GlobalExceptionEnum.NO_BLANK_ERROR;
import static com.tianruan.dc.common.constant.GlobalExceptionEnum.SUCCESS;

@Slf4j
@RestController
@RequestMapping("/api/feedback")
public class FeedbackController {

    @Autowired
    private IFeedbackService ifeedbackService;

    /**
     * 添加意见反馈
     * @param feedbackDTO
     * @return
     */
    @PostMapping("/add")
    //授权
    @PreAuthorize("hasAnyAuthority('sys:super:admin','sys:teacher','sys:student')")
        public VResponse<Object> addfeedback(@RequestBody FeedbackDTO feedbackDTO ){
            try {
                if(Objects.equals(feedbackDTO.getName(), "")){
                    return VResponse.result(NO_BLANK_ERROR);
                }
                if(Objects.equals(feedbackDTO.getPhone(), "")){
                    return VResponse.error(1001,"手机号不能为空");
                }
                if(!(feedbackDTO.getPhone().matches("^1[0-9]{10}$"))){
                    return VResponse.error(1001,"手机号格式错误");
                }
                if(Objects.equals(feedbackDTO.getTitle(), "")){
                    return VResponse.error(1001,"标题不能为空");
                }
                if(Objects.equals(feedbackDTO.getContent(), "")){
                    return VResponse.error(1001,"内容不能为空");
                }
//                //上传文件
//                // todo 判断文件名是否存在特殊字符
//                String supply=null;
//                if(file!= null) {
//                    //获取文件名
//                    String originalFilename = file.getOriginalFilename();
//                    if (originalFilename != null && !originalFilename.isEmpty()) {
//                        //获取最后一个"."的位置
//                        int cutPoint = originalFilename.lastIndexOf(".");
//                        //获取文件名
//                        String prefix = originalFilename.substring(0, cutPoint);
//                        //获取后缀名
//                        String suffix = originalFilename.substring(cutPoint + 1);
//
//                        if (prefix.length() > 50) {
//                            return VResponse.error(1000, "上传的文件名称过长");
//                        }
//
//                        Calendar calendar = Calendar.getInstance();
//                        supply = OSSUtils.uploadFileInputSteam("/file/" + calendar.get(Calendar.YEAR) + "/" +
//                                (calendar.get(Calendar.MONTH) + 1) + "/" + calendar.get(Calendar.DAY_OF_MONTH) + "/", file);
//                    }
//                }
//                FeedbackDTO feedbackDTO = new FeedbackDTO();
//                feedbackDTO.setSupply(supply);
//                feedbackDTO.setName(name);
//                feedbackDTO.setPhone(phone);
//                feedbackDTO.setContent(content);
//                feedbackDTO.setTitle(title);
//                feedbackDTO.setCreate_id(create_id);
                ifeedbackService.addFeedback(feedbackDTO.getName(),feedbackDTO.getPhone(),
                        feedbackDTO.getContent(),feedbackDTO.getSupply(),feedbackDTO.getCreate_id(),feedbackDTO.getTitle());
                return VResponse.result(SUCCESS);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }

        }

//    /**
//     * 上传图片、文件
//     * @param file
//     * @return
//     */
//     @PostMapping("/upload")
//        public String saveOss(MultipartFile file) {
//         try {
//             if (file.isEmpty()) {
//                 return "上传的文件为空";
//             }
//             String originalFilename = file.getOriginalFilename();
//             String resultURL = OSSUtils.uploadFileInputSteam(originalFilename, file);
//             // 可以添加日志记录上传成功信息
//              log.info("上传成功，地址为{}",resultURL);
//
//              // 返回上传成功的地址
//             return resultURL;
//         } catch (Exception e) {
//             // 返回具体的错误信息，方便调试
//             return "上传文件失败: " + e.getMessage();
//         }
//     }



    /**
     * 更改反馈
     * @param feedbackDTO
     * @return
     */
    @PostMapping("/update")
    //授权
    @PreAuthorize("hasAnyAuthority('sys:super:admin','sys:teacher','sys:student')")
        public VResponse<Object> updatefeedback(@RequestBody FeedbackDTO feedbackDTO) {
            try {
                ifeedbackService.updateFeedback(feedbackDTO.getId(), feedbackDTO.getName(),
                        feedbackDTO.getPhone(),feedbackDTO.getContent(),feedbackDTO.getSupply(),feedbackDTO.getTitle());
                return VResponse.result(SUCCESS);
            }
            catch (Exception e) {
                throw new RuntimeException(e);
            }

        }


    /**
     * 分页查询
     * @param feedbackPageQueryDTO
     * @return
     */
    @GetMapping("/page")
    //授权
    @PreAuthorize("hasAnyAuthority('sys:super:admin','sys:teacher','sys:student')")
    public VResponse<PageResult> page(FeedbackPageQueryDTO feedbackPageQueryDTO){
        log.info("意见反馈分页查询：参数为：{}",feedbackPageQueryDTO);
        PageResult pageResult = ifeedbackService.pageQuerry(feedbackPageQueryDTO);
        return VResponse.success(pageResult);
    }


    /**
     * 微信分页查询
     * @param wxfeedbackPageQueryDTO
     * @return
     */
    @GetMapping("/wxpage")
    //授权
    @PreAuthorize("hasAnyAuthority('sys:super:admin','sys:teacher','sys:student')")
    public VResponse<PageResult> wxpage(WXFeedbackPageQueryDTO wxfeedbackPageQueryDTO){
        log.info("意见反馈分页查询：参数为：{}",wxfeedbackPageQueryDTO);
        PageResult pageResult = ifeedbackService.wxpageQuerry(wxfeedbackPageQueryDTO);
        return VResponse.success(pageResult);
    }

    /**
     *  删除反馈
     * @param id
     * @return
     */
    @PostMapping("/delete")
    //授权
    @PreAuthorize("hasAnyAuthority('sys:super:admin','sys:teacher','sys:student')")
        public VResponse<Object> deletefeedback(@RequestParam("id") int id) {
        try {
            ifeedbackService.deleteFeedback(id);
            return VResponse.result(SUCCESS);
        }
        catch (Exception e) {
            throw new RuntimeException(e);
        }

    }
}


















